package gui;

import java.awt.BorderLayout;
import java.awt.Desktop;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.net.URL;
import java.net.URLEncoder;

import logic.CRUDBooks;
import logic.User;
import java.awt.Color;

public class AddBook extends JFrame {

	private JPanel contentPane;
	private JTextField isbnField;
	private JTextField authorField;
	private JTextField titleField;

	/**
	 * Create the frame.
	 */
	public AddBook(final User u) {
		setTitle("Adicionar Livro");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 376, 182);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNome = new JLabel("Titulo:");
		lblNome.setBounds(10, 11, 46, 14);
		contentPane.add(lblNome);
		
		JLabel lblAutor = new JLabel("Autor:");
		lblAutor.setBounds(10, 36, 55, 16);
		contentPane.add(lblAutor);
		
		JLabel lblIsbn = new JLabel("ISBN*:");
		lblIsbn.setToolTipText("Para adicionar um novo livro a biblioteca assume-se que você já tenha comprado o livro e que forneça o ISBN para validação.");
		lblIsbn.setBounds(10, 63, 55, 16);
		contentPane.add(lblIsbn);
		
		isbnField = new JTextField();
		isbnField.setBounds(75, 57, 274, 28);
		contentPane.add(isbnField);
		isbnField.setColumns(10);
		
		authorField = new JTextField();
		authorField.setBackground(Color.LIGHT_GRAY);
		authorField.setEditable(false);
		authorField.setColumns(10);
		authorField.setBounds(75, 30, 274, 28);
		contentPane.add(authorField);
		
		titleField = new JTextField();
		titleField.setBackground(Color.LIGHT_GRAY);
		titleField.setEditable(false);
		titleField.setColumns(10);
		titleField.setBounds(75, 4, 274, 28);
		contentPane.add(titleField);
		
		JButton btnComprarUmLivro = new JButton("Comprar um livro.");
		btnComprarUmLivro.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				String bookName = JOptionPane.showInputDialog("Nome do livro que deseja comprar: ");
				Desktop d = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
				if (d != null && d.isSupported(Desktop.Action.BROWSE)){
					try{
						d.browse(new URL("http://isbndb.com/search/books/1?query=" + URLEncoder.encode(bookName, "UTF-8")).toURI());
					} catch (Exception e){
						JOptionPane.showMessageDialog(null, "A janela de pesquisa não pode ser aberta. Erro e: " + e.getMessage());
					}
				}
			}
		});
		btnComprarUmLivro.setToolTipText("Se o livro não existe na biblioteca compre-o.");
		btnComprarUmLivro.setBounds(10, 105, 132, 28);
		contentPane.add(btnComprarUmLivro);
		
		JButton btnAdicionarUmNovo = new JButton("Adicionar um novo livro");
		btnAdicionarUmNovo.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				try {
					
					String[] bookInfo = CRUDBooks.searchBookByISBN(isbnField.getText());
					titleField.setText(bookInfo[0]);
					authorField.setText(bookInfo[1]);
					int answer = JOptionPane.showConfirmDialog(null, "Confima a inserção do livro?");
					if (answer == 0){
						CRUDBooks cb = new CRUDBooks();
						cb.addBook(u, u, bookInfo[0], bookInfo[1], bookInfo[2], true);
						JOptionPane.showMessageDialog(null, "Livro adicionado com sucesso");
					} else {
						JOptionPane.showMessageDialog(null, "O livro não será cadastrado");
					}
				} catch (Exception e){
					JOptionPane.showMessageDialog(null, "Livro não pode ser cadastrado. Erro : " + e.getMessage());
					
				}
			}
		});
		btnAdicionarUmNovo.setBounds(176, 105, 173, 28);
		contentPane.add(btnAdicionarUmNovo);
	}
}
